#
#
# Makefile for the FreeBSD specific LibUSB 2.0
#

LIB=		usb
SHLIB_MAJOR=	3
SHLIB_MINOR=	0
SRCS=		libusb20.c
SRCS+=		libusb20_desc.c
SRCS+=		libusb20_ugen20.c
INCS+=		libusb20.h
INCS+=		libusb20_desc.h
MAN=		libusb.3 libusb20.3
MKLINT=		no
NOGCCERROR=
PTHREAD_LIBS?=	-lpthread

WARNS?=		2

LIBADD=		pthread

MLINKS+=	libusb.3 usb.3

# libusb 0.1 compat
INCS+=		usb.h
SRCS+=		libusb01.c

# libusb 1.0 compat
INCS+=		libusb.h
SRCS+=		libusb10.c
SRCS+=		libusb10_desc.c
SRCS+=		libusb10_hotplug.c
SRCS+=		libusb10_io.c

PCFILES=	libusb-0.1.pc libusb-1.0.pc libusb-2.0.pc
.for pcfile in ${PCFILES}
${pcfile}: ${pcfile}.in
	sed -e 's,@libdir@,${LIBDIR},g ; s,@sharedlibdir@,${SHLIBDIR},g ; \
		s,@includedir@,${INCLUDEDIR},g ;' ${.ALLSRC} > ${.TARGET}
.endfor
CLEANFILES+=	${PCFILES}

#
# Cross platform support
#
# Examples:
# make LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h
# make \
#   LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h \
#   DEBUG_FLAGS="-g"
#
# From Ubuntu 10.04:
# freebsd-make LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h \
#    PTHREAD_LIBS="-lpthread -lrt"
# freebsd-make \
#    LIBUSB_GLOBAL_INCLUDE_FILE=libusb_global_linux.h \
#    PTHREAD_LIBS="-lpthread -lrt"
#
#
.if defined(LIBUSB_GLOBAL_INCLUDE_FILE)
CFLAGS+=	-DLIBUSB_GLOBAL_INCLUDE_FILE=\"${LIBUSB_GLOBAL_INCLUDE_FILE}\"
CFLAGS+=	-DUSB_GLOBAL_INCLUDE_FILE=\"${LIBUSB_GLOBAL_INCLUDE_FILE}\"
CFLAGS+=	-I ../../sys
.endif

# LibUSB v1.0
MLINKS += libusb.3 libusb_get_version.3
MLINKS += libusb.3 libusb_init.3
MLINKS += libusb.3 libusb_init_context.3
MLINKS += libusb.3 libusb_exit.3
MLINKS += libusb.3 libusb_has_capability.3
MLINKS += libusb.3 libusb_strerror.3
MLINKS += libusb.3 libusb_error_name.3
MLINKS += libusb.3 libusb_set_debug.3
MLINKS += libusb.3 libusb_get_device_list.3
MLINKS += libusb.3 libusb_free_device_list.3
MLINKS += libusb.3 libusb_get_bus_number.3
MLINKS += libusb.3 libusb_get_port_number.3
MLINKS += libusb.3 libusb_get_device_address.3
MLINKS += libusb.3 libusb_get_device_speed.3
MLINKS += libusb.3 libusb_get_max_packet_size.3
MLINKS += libusb.3 libusb_get_max_iso_packet_size.3
MLINKS += libusb.3 libusb_ref_device.3
MLINKS += libusb.3 libusb_unref_device.3
MLINKS += libusb.3 libusb_open.3
MLINKS += libusb.3 libusb_open_device_with_vid_pid.3
MLINKS += libusb.3 libusb_close.3
MLINKS += libusb.3 libusb_get_device.3
MLINKS += libusb.3 libusb_get_configuration.3
MLINKS += libusb.3 libusb_set_configuration.3
MLINKS += libusb.3 libusb_claim_interface.3
MLINKS += libusb.3 libusb_release_interface.3
MLINKS += libusb.3 libusb_set_interface_alt_setting.3
MLINKS += libusb.3 libusb_clear_halt.3
MLINKS += libusb.3 libusb_reset_device.3
MLINKS += libusb.3 libusb_check_connected.3
MLINKS += libusb.3 libusb_kernel_driver_active.3
MLINKS += libusb.3 libusb_get_driver.3
MLINKS += libusb.3 libusb_get_driver_np.3
MLINKS += libusb.3 libusb_detach_kernel_driver.3
MLINKS += libusb.3 libusb_detach_kernel_driver_np.3
MLINKS += libusb.3 libusb_attach_kernel_driver.3
MLINKS += libusb.3 libusb_set_auto_detach_kernel_driver.3
MLINKS += libusb.3 libusb_get_device_descriptor.3
MLINKS += libusb.3 libusb_get_active_config_descriptor.3
MLINKS += libusb.3 libusb_get_config_descriptor.3
MLINKS += libusb.3 libusb_get_config_descriptor_by_value.3
MLINKS += libusb.3 libusb_free_config_descriptor.3
MLINKS += libusb.3 libusb_get_string_descriptor.3
MLINKS += libusb.3 libusb_get_string_descriptor_ascii.3
MLINKS += libusb.3 libusb_parse_ss_endpoint_comp.3
MLINKS += libusb.3 libusb_free_ss_endpoint_comp.3
MLINKS += libusb.3 libusb_get_ss_endpoint_companion_descriptor.3
MLINKS += libusb.3 libusb_free_ss_endpoint_companion_descriptor.3
MLINKS += libusb.3 libusb_parse_bos_descriptor.3
MLINKS += libusb.3 libusb_free_bos_descriptor.3
MLINKS += libusb.3 libusb_get_usb_2_0_extension_descriptor.3
MLINKS += libusb.3 libusb_free_usb_2_0_extension_descriptor.3
MLINKS += libusb.3 libusb_get_ss_usb_device_capability_descriptor.3
MLINKS += libusb.3 libusb_free_ss_usb_device_capability_descriptor.3
MLINKS += libusb.3 libusb_get_container_id_descriptor.3
MLINKS += libusb.3 libusb_free_container_id_descriptor.3
MLINKS += libusb.3 libusb_alloc_streams.3
MLINKS += libusb.3 libusb_free_streams.3
MLINKS += libusb.3 libusb_alloc_transfer.3
MLINKS += libusb.3 libusb_free_transfer.3
MLINKS += libusb.3 libusb_transfer_set_stream_id.3
MLINKS += libusb.3 libusb_transfer_get_stream_id.3
MLINKS += libusb.3 libusb_submit_transfer.3
MLINKS += libusb.3 libusb_cancel_transfer.3
MLINKS += libusb.3 libusb_control_transfer.3
MLINKS += libusb.3 libusb_bulk_transfer.3
MLINKS += libusb.3 libusb_interrupt_transfer.3
MLINKS += libusb.3 libusb_try_lock_events.3
MLINKS += libusb.3 libusb_lock_events.3
MLINKS += libusb.3 libusb_unlock_events.3
MLINKS += libusb.3 libusb_event_handling_ok.3
MLINKS += libusb.3 libusb_event_handler_active.3
MLINKS += libusb.3 libusb_interrupt_event_handler.3
MLINKS += libusb.3 libusb_lock_event_waiters.3
MLINKS += libusb.3 libusb_unlock_event_waiters.3
MLINKS += libusb.3 libusb_wait_for_event.3
MLINKS += libusb.3 libusb_handle_events_timeout_completed.3
MLINKS += libusb.3 libusb_handle_events_completed.3
MLINKS += libusb.3 libusb_handle_events_timeout.3
MLINKS += libusb.3 libusb_handle_events.3
MLINKS += libusb.3 libusb_handle_events_locked.3
MLINKS += libusb.3 libusb_get_next_timeout.3
MLINKS += libusb.3 libusb_set_pollfd_notifiers.3
MLINKS += libusb.3 libusb_get_pollfds.3
MLINKS += libusb.3 libusb_hotplug_register_callback.3
MLINKS += libusb.3 libusb_hotplug_deregister_callback.3

# LibUSB v0.1
MLINKS += libusb.3 usb_open.3
MLINKS += libusb.3 usb_close.3
MLINKS += libusb.3 usb_get_string.3
MLINKS += libusb.3 usb_get_string_simple.3
MLINKS += libusb.3 usb_get_descriptor_by_endpoint.3
MLINKS += libusb.3 usb_get_descriptor.3
MLINKS += libusb.3 usb_parse_descriptor.3
MLINKS += libusb.3 usb_parse_configuration.3
MLINKS += libusb.3 usb_destroy_configuration.3
MLINKS += libusb.3 usb_fetch_and_parse_descriptors.3
MLINKS += libusb.3 usb_bulk_write.3
MLINKS += libusb.3 usb_bulk_read.3
MLINKS += libusb.3 usb_interrupt_write.3
MLINKS += libusb.3 usb_interrupt_read.3
MLINKS += libusb.3 usb_control_msg.3
MLINKS += libusb.3 usb_set_configuration.3
MLINKS += libusb.3 usb_claim_interface.3
MLINKS += libusb.3 usb_release_interface.3
MLINKS += libusb.3 usb_set_altinterface.3
MLINKS += libusb.3 usb_resetep.3
MLINKS += libusb.3 usb_clear_halt.3
MLINKS += libusb.3 usb_reset.3
MLINKS += libusb.3 usb_strerror.3
MLINKS += libusb.3 usb_init.3
MLINKS += libusb.3 usb_set_debug.3
MLINKS += libusb.3 usb_find_busses.3
MLINKS += libusb.3 usb_find_devices.3
MLINKS += libusb.3 usb_device.3
MLINKS += libusb.3 usb_get_busses.3
MLINKS += libusb.3 usb_check_connected.3

# LibUSB v2.0
MLINKS += libusb20.3 libusb20_tr_close.3
MLINKS += libusb20.3 libusb20_tr_open.3
MLINKS += libusb20.3 libusb20_tr_get_pointer.3
MLINKS += libusb20.3 libusb20_tr_get_time_complete.3
MLINKS += libusb20.3 libusb20_tr_get_actual_frames.3
MLINKS += libusb20.3 libusb20_tr_get_actual_length.3
MLINKS += libusb20.3 libusb20_tr_get_max_frames.3
MLINKS += libusb20.3 libusb20_tr_get_max_packet_length.3
MLINKS += libusb20.3 libusb20_tr_get_max_total_length.3
MLINKS += libusb20.3 libusb20_tr_get_status.3
MLINKS += libusb20.3 libusb20_tr_pending.3
MLINKS += libusb20.3 libusb20_tr_callback_wrapper.3
MLINKS += libusb20.3 libusb20_tr_clear_stall_sync.3
MLINKS += libusb20.3 libusb20_tr_drain.3
MLINKS += libusb20.3 libusb20_tr_set_buffer.3
MLINKS += libusb20.3 libusb20_tr_set_callback.3
MLINKS += libusb20.3 libusb20_tr_set_flags.3
MLINKS += libusb20.3 libusb20_tr_get_length.3
MLINKS += libusb20.3 libusb20_tr_set_length.3
MLINKS += libusb20.3 libusb20_tr_set_priv_sc0.3
MLINKS += libusb20.3 libusb20_tr_set_priv_sc1.3
MLINKS += libusb20.3 libusb20_tr_set_timeout.3
MLINKS += libusb20.3 libusb20_tr_set_total_frames.3
MLINKS += libusb20.3 libusb20_tr_setup_bulk.3
MLINKS += libusb20.3 libusb20_tr_setup_control.3
MLINKS += libusb20.3 libusb20_tr_setup_intr.3
MLINKS += libusb20.3 libusb20_tr_setup_isoc.3
MLINKS += libusb20.3 libusb20_tr_bulk_intr_sync.3
MLINKS += libusb20.3 libusb20_tr_start.3
MLINKS += libusb20.3 libusb20_tr_stop.3
MLINKS += libusb20.3 libusb20_tr_submit.3
MLINKS += libusb20.3 libusb20_tr_get_priv_sc0.3
MLINKS += libusb20.3 libusb20_tr_get_priv_sc1.3
MLINKS += libusb20.3 libusb20_dev_get_backend_name.3
MLINKS += libusb20.3 libusb20_dev_get_info.3
MLINKS += libusb20.3 libusb20_dev_get_iface_desc.3
MLINKS += libusb20.3 libusb20_dev_get_desc.3
MLINKS += libusb20.3 libusb20_dev_get_stats.3
MLINKS += libusb20.3 libusb20_dev_close.3
MLINKS += libusb20.3 libusb20_dev_detach_kernel_driver.3
MLINKS += libusb20.3 libusb20_dev_set_config_index.3
MLINKS += libusb20.3 libusb20_dev_get_debug.3
MLINKS += libusb20.3 libusb20_dev_get_fd.3
MLINKS += libusb20.3 libusb20_dev_kernel_driver_active.3
MLINKS += libusb20.3 libusb20_dev_open.3
MLINKS += libusb20.3 libusb20_dev_process.3
MLINKS += libusb20.3 libusb20_dev_request_sync.3
MLINKS += libusb20.3 libusb20_dev_req_string_sync.3
MLINKS += libusb20.3 libusb20_dev_req_string_simple_sync.3
MLINKS += libusb20.3 libusb20_dev_reset.3
MLINKS += libusb20.3 libusb20_dev_check_connected.3
MLINKS += libusb20.3 libusb20_dev_set_power_mode.3
MLINKS += libusb20.3 libusb20_dev_get_power_mode.3
MLINKS += libusb20.3 libusb20_dev_get_port_path.3
MLINKS += libusb20.3 libusb20_dev_get_power_usage.3
MLINKS += libusb20.3 libusb20_dev_set_alt_index.3
MLINKS += libusb20.3 libusb20_dev_get_device_desc.3
MLINKS += libusb20.3 libusb20_dev_alloc_config.3
MLINKS += libusb20.3 libusb20_dev_alloc.3
MLINKS += libusb20.3 libusb20_dev_get_address.3
MLINKS += libusb20.3 libusb20_dev_get_parent_address.3
MLINKS += libusb20.3 libusb20_dev_get_parent_port.3
MLINKS += libusb20.3 libusb20_dev_get_bus_number.3
MLINKS += libusb20.3 libusb20_dev_get_mode.3
MLINKS += libusb20.3 libusb20_dev_get_speed.3
MLINKS += libusb20.3 libusb20_dev_get_config_index.3
MLINKS += libusb20.3 libusb20_dev_free.3
MLINKS += libusb20.3 libusb20_dev_set_debug.3
MLINKS += libusb20.3 libusb20_dev_wait_process.3
MLINKS += libusb20.3 libusb20_be_get_template.3
MLINKS += libusb20.3 libusb20_be_set_template.3
MLINKS += libusb20.3 libusb20_be_get_dev_quirk.3
MLINKS += libusb20.3 libusb20_be_get_quirk_name.3
MLINKS += libusb20.3 libusb20_be_add_dev_quirk.3
MLINKS += libusb20.3 libusb20_be_remove_dev_quirk.3
MLINKS += libusb20.3 libusb20_be_alloc_default.3
MLINKS += libusb20.3 libusb20_be_device_foreach.3
MLINKS += libusb20.3 libusb20_be_dequeue_device.3
MLINKS += libusb20.3 libusb20_be_enqueue_device.3
MLINKS += libusb20.3 libusb20_be_free.3
MLINKS += libusb20.3 libusb20_me_get_1.3
MLINKS += libusb20.3 libusb20_me_get_2.3
MLINKS += libusb20.3 libusb20_me_encode.3
MLINKS += libusb20.3 libusb20_me_decode.3
MLINKS += libusb20.3 libusb20_desc_foreach.3
MLINKS += libusb20.3 libusb20_strerror.3
MLINKS += libusb20.3 libusb20_error_name.3

.include <bsd.lib.mk>
